package com.qf.advice;

import org.aopalliance.intercept.MethodInterceptor;
import org.aopalliance.intercept.MethodInvocation;
import org.springframework.cglib.proxy.MethodProxy;

import java.lang.reflect.Method;

/**
 * 环绕通知  切面实现类 + 切入点 == 切面
 *
 * @author lixu
 */
public class MyAroudAdvice implements MethodInterceptor {

    /**
     * 环绕通知代码
     *
     *   我想进入切面  我想回到Service
     *   我还想再进入切面 我想回到Service
     * @param invocation:执行的方法
     * @return
     * @throws Throwable
     */
    @Override
    public Object invoke(MethodInvocation invocation) throws Throwable {
        System.out.println("1：苹果多少钱啊？");
        Object[] arguments = invocation.getArguments();
        if(arguments == null){
            arguments = new Object[1];
        }
        arguments[0] = 1;
        //回核心代码
        invocation.proceed();
        //辅助代码
        System.out.println("3：能便宜一点吗？");
        arguments[0] = 2;
        //回核心代码
        invocation.proceed();
        System.out.println("5：北京就不能便宜一点啊？");
        arguments[0] = 3;
        //回核心代码
        invocation.proceed();

        return null;
    }
}
